Mikmak Model UnitBase
Home

Mikmak Model UnitBase

Mikmak Model UnitBase

De model klasse voor de Unitbase entiteit

Probleem

Bij het toevoegen of wijzigen van een basiseenheid zijn er enkele regels waarmee we rekening moeten houden. De validatie hiervan gebeurt in deze Model klasse in de setters.

Design

We baseren ons op het Mikmak logisch model om de model klasse te implementeren. Voor het gemak reproduren we hier nog eens het logisch model.

Tabelnaam: UnitBase

Displaynaam: Basiseenheid

Volgorde: Name

Column Name Display Text Searchable Default Value Unique Type Length Variable International Required Reference Table Reference Column Display Column List HTML element HTML type attribute HTML name attribute HTML pattern attribute HTML title attribute HTML placeholder attribute
Name Naam SELECTBY NO YES CHAR 255 YES YES YES NA NA NA YES INPUT TEXT name NA NA NA
Description Beschrijving NO NO NO CHAR 1024 YES YES NO NA NA NA NO TEXTEAREA NA description NA NA NA
ShippingCostMultiplier Verzendkostenfactor NO NO NO FLOAT NA NA NA NO NA NA NA YES INPUT TEXT shippingcostmultiplier NA NA NA
Code Code SELECTBY NO YES CHAR 2 YES YES YES NA NA NA YES INPUT TEXT code NA NA NA
Id NA NA PK YES Integer NA NA NA Yes NA NA NA YES INPUT HIDDEN id NA NA NA

Oplossing

  1. Maak een klassenbestand met de naam UnitBase.cs in de map Models.
    Een model klasse toevoegen
    Een model klasse toevoegen
    Een klassenbestand toevoegen
    Een klassenbestand toevoegen
  2. Maak daarin een klasse met de naam UnitBase.
  3. Maak voor elke kolom in de tabel een getter/setter property:
  4. Het gegevenstype van SQL moet je in overeenstemming brengen met het C# gevenstype. Hoe je SQL gegevenstypes in overeenstemming brengt met C# gegevenstypes lees je in EF entiteiten. Maar SQL beschikt over veel meer gegevenstypes dan C#. Hoe je die extra informatie (o.a. lengte, variabel, nationale karakters) van SQL kunt overbrengen naar C# en omgekeerd, lees je in EF object relational mapping met attributen. In de UnitBase tabel zitten geen foreign keys. We hebben dus geen referenceproperties nodig, alleen eenvoudige scalaire eigenschappen.
  5. Tenslotte voeg je de businessregels van het conceptueel model (o.a. verplichte kolommen, unieke waarden, displaynaam, primary key) toe. Hoe je dat doet lees je in EF Business regels toevoegen met attributen.
  6. Dat levert de volgende code op:
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace Webwinkel.Models
    {
        public class UnitBase
        {
            [Key]
            public int Id { get; set; }
    
            [Required(ErrorMessage = "{0} is verplicht.")]
            [Column(TypeName = "nvarchar")]
            [MaxLength(255, ErrorMessage = "{0} kan maximum 255 karakters bevatten.")]
            [DisplayName("Naam")]
            public string Name { get; set; }
    
            [Column(TypeName = "nvarchar")]
            [MaxLength(1024, ErrorMessage = "{0} kan maximum 1024 karakters bevatten.")]
            [DisplayName("Beschrijving")]
            public string Description { get; set; }
    
            [Column(TypeName = "float")]
            [DisplayName("Verzendingskostfactor")]
            public float ShippingCostMultiplier { get; set; }
    
            [Required(ErrorMessage = "{0} is verplicht.")]
            [Column(TypeName = "char")]
            [MaxLength(2, ErrorMessage = "{0} kan maximum 2 karakters bevatten.")]
            [DisplayName("Code")]
            public string Code { get; set; }
        }
    }
    
    

JI
2016-11-28 13:10:42